﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Datos;

namespace Negocio.catalogos
{
    public class catalogoTiempo
    {
        ControlAsistenciaEntities _objEntity = new ControlAsistenciaEntities();
        public List<clases_tontas.tiempo> obtenerTiempoXidDocente(int _idDocente,int _idCarrera)
        {
            List<clases_tontas.tiempo> _lista = new List<clases_tontas.tiempo>();
            try
            {
                var tiempo = _objEntity.procConsultarTiempo(_idDocente, _idCarrera);
                foreach (var item in tiempo)
                {
                    _lista.Add(new clases_tontas.tiempo((int)item.horas, (int)item.idDocente, (int)item.idPeriodo, (int)item.minutos, (int)item.segundos,_idCarrera, item.ultimoAcceso.ToString(),TimeSpan.Parse(item.horaEntrada.ToString()),TimeSpan.Parse(item.horaSalida.ToString())));
                }
                return _lista;
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public List<clases_tontas.tiempo> obtenerTiempoXCarrera(int _idCarrera,int _idPeriodo)
        {
            List<clases_tontas.tiempo> _lista = new List<clases_tontas.tiempo>();
            try
            {
                var tiempo = _objEntity.procConsultarTiempoCarrera(_idCarrera, _idPeriodo).ToList();
                foreach (var item in tiempo)
                {
                    Negocio.clases_tontas.tiempo _fila = new clases_tontas.tiempo();
                    var docente = new catalogoDocente().consultarDocenteXId(Convert.ToInt32(item.idDocente));
                    _fila.Nombre = docente.apellido1 + " " + docente.apellido2 + " " + docente.nombre;
                    _fila.minutos = (int)item.minutos;
                    _fila.segundos = (int)item.segundos;
                    _fila.hora = (int)item.horas;
                    _fila.idDocente = (int)item.idDocente;
                    _fila.UltimoAcceso =Convert.ToDateTime(item.ultimoAcceso).ToShortDateString();
                    _fila.horaEntrada = (TimeSpan)item.horaEntrada;
                    _fila.horaSalida = (TimeSpan)item.horaSalida;
                    _fila.duracionAcceso = (item.horaSalida-item.horaEntrada).ToString();
                    _lista.Add(_fila);
                }
                return _lista;
            }
            catch (Exception)
            {
                return _lista;
            }
        }
        public string insertarTiempo(clases_tontas.tiempo _obj)
        {
            try
            {
                _objEntity.procAgregarTiempo(_obj.hora,_obj.idDocente,_obj.idPeriodo,_obj.minutos,_obj.segundos,_obj.idCarrera,Convert.ToDateTime(_obj.UltimoAcceso),_obj.horaEntrada,_obj.horaSalida);
                return "OK";
            }
            catch (Exception)
            {
                return "ERROR";
            }
        }
        public string modificarTiempo(clases_tontas.tiempo _obj)
        {
            try
            {
                _objEntity.procModificarTiempo(_obj.idDocente,_obj.hora,_obj.minutos,_obj.segundos,_obj.idPeriodo,Convert.ToDateTime(_obj.UltimoAcceso), _obj.horaEntrada, _obj.horaSalida);
                return "OK";
            }
            catch (Exception)
            {
                return "ERROR";
            }
        }
         /// <summary>
         /// Para obtener el acceso por rango de fechas
         /// </summary>
         /// <param name="_desde"></param>
         /// <param name="_hasta"></param>
         /// <returns></returns>
        public List<clases_tontas.tiempo> obtenerUltimosAccesos(DateTime _desde, DateTime _hasta)
        {
            List<clases_tontas.tiempo> _lista = new List<clases_tontas.tiempo>();
            try
            {
                foreach (var item in _objEntity.consultarUltimosAccesos(_desde,_hasta))
                {
                    _lista.Add(new clases_tontas.tiempo((int)item.horas, (int)item.idDocente, (int)item.idPeriodo, (int)item.minutos, (int)item.segundos, (int)item.idCarrera, item.ultimoAcceso.ToString(),TimeSpan.Parse(item.horaEntrada.ToString()),TimeSpan.Parse(item.horaSalida.ToString())));   
                }
                return _lista;
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}
